home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / basic / qbfaqr01.zip / GETBAUD.BAS < prev    next >
BASIC Source File  |  1992-08-09  |  1KB  |  41 lines

  1. 'Example
  2. DECLARE FUNCTION GetBaudRate% (PORT%)
  3. DEFINT A-Z
  4. a% = GetBaudRate%(1)
  5. b% = GetBaudRate%(2)
  6. SCREEN 2
  7. PRINT a%, b%
  8. END
  9.  
  10. 'Actual routine
  11.  
  12. FUNCTION GetBaudRate% (PORT%)
  13.  
  14. IF (PORT% <> 1 AND PORT% <> 2) THEN
  15.    GetBaudRate% = -1
  16.    EXIT FUNCTION
  17. END IF
  18.  
  19. ADDR = &H4F8 - (&H100 * PORT)            ' base address of port reg's
  20. ADDR.LCR = ADDR + 3                      ' Line Control Register
  21. ADDR.DL.LSB = ADDR + 0: ADDR.DL.MSB = ADDR + 1' Divisor Latch LSB & MSB
  22. VAL.LCR = INP(ADDR.LCR)                  ' get old LCR value
  23. OUT ADDR.LCR, VAL.LCR AND &H7F           ' Disable DLAB to get to inters
  24. VAL.INT = INP(ADDR.DL.MSB)               ' Get the int enable statuses
  25. OUT ADDR.DL.MSB, 0                        ' Disable all modem intertupts
  26. OUT ADDR.LCR, VAL.LCR OR &H80            ' Enable DLAB to gain access
  27.  
  28. 'get the current baud rate
  29.  
  30. MSB = INP(ADDR.DL.MSB)
  31. LSB = INP(ADDR.DL.LSB)'get old baud rate
  32. DIVISOR = MSB * 2 ^ 8 + LSB
  33.  
  34. OUT ADDR.LCR, VAL.LCR AND &H7F    ' Disable DLAB to get to inters
  35. OUT ADDR.DL.MSB, VAL.INT          ' Replace orig. inter. values
  36. OUT ADDR.LCR, VAL.LCR             ' Replace orig. LCR values
  37.  
  38. GetBaudRate% = (1843200! / DIVISOR) / 16
  39. END FUNCTION
  40.  
  41.